package Day013_线程安全.demo03_线程状态;

/**
 * @author zhangyan
 * @date 2020/5/4 11:07
 */

/*
    在API中 java.lang.Thread.State 这个枚举中给出了六种线程状态切换:

    线程状态                                      导致状态发生条件

    NEW(新建)                       线程刚被创建，但是并未启动。还没调用start方法。MyThread t = new MyThread只有线程对象，没有线程特征。
   (创建线程时)

    Runnable(可运行)                线程可以在java虚拟机中运行的状态，可能正在运行自己代码，也可能没有，这取决于操作系统处理器。
  (调用了t.start方法)

    Blocked(锁阻塞)                 当一个线程试图获取一个对象锁，而该对象锁被其他的线程持有，则该线程进入Blocked状态；当该线程持有锁时，
    (等待锁对象时)                   该线程将变成Runnable状态。

    Waiting(无限等待)                一个线程在等待另一个线程执行一个（唤醒）动作时，该线程进入Waiting状态。进入这个状态后不能自动唤醒，
 (任意锁对象 调用wait方法时)           必须等待另一个线程调用notify或者notifyAll方法才能够唤醒。 调用wait和notify的对象必须是同一个锁对象

    TimedWaiting(计时等待)           同waiting状态，有几个方法有超时参数，调用他们将进入Timed Waiting状态
 (Thread.sleep 、Object.wait)       这一状态将一直保持到超时期满或者接收到唤醒通知。

    Teminated(被终止)                因为run方法正常退出而死亡，或者因为没有捕获的异常终止了run方法而死亡。
  (run方法执行完毕或异常)

 */

public class Test {
    public static void main(String[] args) {

    }
}
